package cn.good.yan.sf.t6.blocking;

/**
 * 6 阻塞队列 - 接口
 *
 * @auther shengren.yan
 * @create 2024-08-25-19:06
 */
public interface BlockingQueue<E> {

    /**
     * 添加元素
     *
     * @param e
     * @throws InterruptedException
     */
    void offer(E e) throws InterruptedException;

    /**
     * 添加元素 - 加时间限制
     *
     * @param e
     * @param timeout
     * @throws InterruptedException
     */
    boolean offer(E e, long timeout) throws InterruptedException;

    /**
     * 移除元素
     *
     * @return {@link E}
     * @throws InterruptedException
     */
    E pool() throws InterruptedException;


    // 检查队列是否为空，true就是空
    boolean isEmpty();

    // 检查队列是否满了，true就是满了
    boolean isFull();

}
